<?php
/**
 * 头号试玩
 * @todo :  1、上线时，需要在平台上通过接口新建菜单
 *          2、上线时，修改代码中的 m_appid 和 m_enc_key
 *          3、上线时，需要关闭DEBUG_LOG，或者直接去除代码中所有 writeLog 的函数调用
 *          4、上线时，需要通过平台的接口上传图片获取picID，更换install函数(安装赚钱按钮)中的ID
 *
 * */

/*
{
    "button": [
        {
            "type": "view",
            "name": "下载",
            "url": "http://wx.th233.cn/download.html"
        },
        {
            "type": "click",
            "name": "问题反馈",
            "key": "V2001_FEEDBACK"
        },

    ]
}
 */

define('DEBUG_LOG', true);  // 调测跟踪日志开关
define('VERCODE_LEN', 8);   // 数字验证码长度
define('VERCODE_TIME', 3);  // 数字验证码有效时限(分钟)

require_once 'WeChatApi.php';

/**
 * 业务处理提供类
 */
class weChat extends WeChatApi{
//    const APPENDRESP = "\n其它问题请回复【人工客服+ID+问题】周一至周五10:00-18:00会由人工客服为您处理。";              // 回复消息附加文本
    const APPENDRESP = "";              // 回复消息附加文本
    const CUSTOMERID = 'kof1225';      // 指定客户账号
    private $keyWords = array(
        'mainMenu' => array('1','2','3','4','5','thsw666','绑定','绑定微信','微信绑定','获取验证码','验证码'),
        'subBMenu' => array('11','12','13','14','15','16'),
        'subCMenu' => array('21','22','23'),
        'subDMenu' => array('31','32','33','34','35','36','36'),
        'subHMenu' => array('41','42','43','44','45','46'),
    );    // 消息关键字，第一维表示规则,第二维表示规则下的关键字
    private $connMem;       // memcache
    private $connDB;        // db

    protected static $m_token = 'touhaoshiwan'; // 业务公众号的token
    protected static $m_appid = 'wx4c78330c3032eb27';                               // 业务公众号标识
    protected static $m_aes_key = '6bVER49GnW2hMPKzZgsqDaGGFXUEsRwnnWtqvqvOTJo';
    protected static $m_secret = '94b0ce7f3558e0f193c56aa50141c4a7';                // 密钥

    public function __construct(){
        $this->connDB = new PDO('mysql:host=localhost;dbname=testtoutiao', 'root', 'Sem_1653');
        $this->connDB->query('set names utf8;');
        $this->connDB->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

        date_default_timezone_set('Asia/Shanghai');
    }

    public function __destruct(){
    }

    #鉴权
    public function valid(){
        parent::valid();
    }

    #自动恢复
    protected function receiveText($object){
        $resultStr = '';
        $content = trim($object->Content);

        if(strpos($content, '人工客服') !== false){
            return parent::transmit2Custom($object, self::CUSTOMERID);
        } else {
            $keyRuleFunc = $this->isKeyword($content);
            if(!empty($keyRuleFunc)){ // 关键字回复
                return $this->$keyRuleFunc($object, $content);
            }

            switch (strval($content)){
                case 'thsw666':
//                    $content = "小可爱~ 绑定微信请关注“thsw666”【头号试玩+】公众号哈~ 爱你~"
//                        . self::APPENDRESP;
                    $mediaId = "zHtb70iHKajpasHOmHvjrma25qhJUFWsi3MsDGk2nQ4";
                    return parent::transmitPic($object, $mediaId);
                    break;
                default:
                    $content = "亲爱的头号玩家，欢迎连线头号试玩客服！如您在使用头号试玩时出现闪退，打开或下载异常，请您在更新完毕后，重新安装再试玩。\n"
                        . "重新安装：您可以直接在safari浏览器中输入头号试玩官方下载地址：www.touhaoshiwan.com 进行重新下载。\n"
                        . "如想更快得到问题答复，回复问题数字进行查询：\n"
                        . "1、头号试玩怎么玩\n"
                        . "2、赚钱任务问题\n"
                        . "3、账号问题\n"
                        . "4、提现问题\n"
                        . "5、其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n"
//                        . "H、高额任务问题\n"
                        . self::APPENDRESP;
                    break;
            }
            return parent::transmitText($object, $content);
        }
    }

    protected function mainMenu($object, $content){
        $response = '';
        switch($content){
            case 'thsw666':
            case '绑定':
            case '验证码':
            case '绑定微信':
            case '获取验证码':
            case '微信绑定':
//                $response = "小可爱~ 绑定微信请关注“thsw666”【头号试玩+】公众号哈~ 爱你~";
                    $mediaId = "zHtb70iHKajpasHOmHvjrma25qhJUFWsi3MsDGk2nQ4";
                    return parent::transmitPic($object, $mediaId);
                break;
            case '1':
                $response = "按照以下提示进行选择：\n"
                    . "11. 苹果系统下载头号试玩\n"
                    . "12. 安卓系统下载头号试玩\n"
                    . "13. 其他系统能否下载头号试玩\n"
                    . "14. 试玩应用获得奖励\n"
                    . "15. 邀请好友试玩获得奖励\n"
                    . "16. 其他玩法\n"
                    . "17. 其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n"
                    . "回复数字查看答案";
                break;
            case '2':
                $response = "按照以下提示进行选择：\n"
                    . "21、任务抢不到或份额少\n"
                    . "22、试玩任务无法下载\n"
                    . "23、试玩任务无法完成\n"
                    . "24、没有试玩任务\n"
                    . "25、其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n"
                    . "回复数字查看答案";
                break;
            case '3':
                $response = "按照以下提示进行选择：\n"
                    . "31、账号ID绑定规则\n"
                    . "32、绑定/解绑手机号\n"
                    . "33、绑定/解绑微信号\n"
                    . "34、账号被冻结\n"
                    . "35、接收不到验证码\n"
                    . "36、提示越狱无法使用头号试玩\n"
                    . "37、其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n"
                    . "回复数字查看答案";
                break;
            case '4':
                $response = "按照以下提示进行选择：\n"
                    . "41、如何提现\n"
                    . "42、微信提现\n"
                    . "43、支付宝提现\n"
                    . "44、提现失败\n"
                    . "45、提现到账时间\n"
                    . "46、提现次数\n"
                    . "47、其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n"
                    . "回复数字查看答案";
                break;
            case '5':
                $response = "如您有其他建议或意见，欢迎留言给我们，谢谢！";
                break;
//            case 'F':
//                $response = "1.如何收徒——分享收徒链接或收徒二维码给好友，好友通过微信、QQ、微博扫码或打开链接，通过Safair浏览器打开下载才能收徒成功\n"
//                        . "2.师傅无分成——徒弟需要完成新手任务，在做一个快速任务后，师傅才可以获得徒弟分成";
//                break;
//            case 'G':
//                $response = "建议清理一下浏览器历史缓存";
//                break;
            default:
                break;
        }
        return parent::transmitText($object, $response);
    }


    protected function subBMenu($object, $content){
        $response = '';
        switch ($content) {
            case '11':
                $response = "请打开苹果自带浏览器\"Safari\"，输入\" www.touhaoshiwan.com \"进入试玩赚钱页面安装头号试玩助手。 【注意】头号试玩的\"唯一\"官方链接是\" www.touhaoshiwan.com \"，请用浏览器访问并按提示使用（下载激活助手）！  1).因头号试玩ID登录过越狱设备而造成的账号被盗，头号试玩概不负责！";
                break;
            case '12':
                $response = "头号试玩安卓版本暂未开发，您可以通过安卓设备下载其他软件。 1).因头号试玩ID登录过越狱设备而造成的账号被盗，头号试玩概不负责！";
                break;
            case '13':
                $response = "除苹果的手机系统外，其他系统暂不支持。1).因头号试玩ID登录过越狱设备而造成的账号被盗，头号试玩概不负责！";
                break;
            case '14':
                $response = "苹果用户请用苹果自带浏览器Safari打开\" www.touhaoshiwan.com \"（安卓暂没有）\n"
                    . " 【苹果版】点击任务列表领取任务→按要求完成任务→获取奖励 \n"
                    . "【安卓版】暂无";
                break;
            case '15':
                $response = "【苹果用户收徒】 \n"
                    . " 1、用苹果自带浏览器Safari打开\" www.touhaoshiwan.com \"，点击“邀请好友 →「晒单收徒」、「分享收徒」、「扫码收徒」或复制「收徒链接」； \n"
                    . " 2、让好友扫码或者打开链接，下载头号试玩。 \n"
                    . "【规则】iOS徒弟做标准任务您可享受0.5元师父分红奖励，每个徒弟您可以享受奖励上限20元。";
                break;
            case '16':
                $response = "头号试玩将收取用户建议，推出更多有趣玩法，敬请期待！ ";
                break;
            default:
                break;
        }

        $response .= "\n其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理";
        return parent::transmitText($object, $response);
    }


    protected function subCMenu($object, $content){
        $response = '';
        switch ($content){
            case '21':
                $response = "【抢任务过程中卡住了】\n"
                    . "点击量过大造成的，刷新页面尝试即可，如任务被抢完不要丧气，下次还会发放任务份额。 \n"
                    . "【任务份额少抢不到】 \n"
                    . "可以做其它任务或者多收些徒弟来增加收益，收徒可享受iOS徒弟0.5元奖励，每个徒弟上限20元。";
                break;
            case '22':
                $response = "【任务无法下载】\n"
                    . "1、请您检查WiFi是否被占网速，或App Store服务器正忙，可以选择稍后尝试； \n"
                    . "2、请您尝试将手机的DNS改成8.8.8.8，操作流程：设置→无线局域网→当前WiFi右边的蓝色感叹号→DNS更改为“8.8.8.8”，成功下载完App后将DNS删除。 ";
                break;
            case '23':
                $response = "如果没有拿到任务奖励，请确认以下情况：（若满足以下条件请关闭后台程序重新体验）\n"
                    . "1)、AppStore渠道正确下载，不要下错；\n"
                    . "2)、首次下载（在任务进行的下载过程中如果暂停下载再继续，也会被计为非首次下载）；\n"
                    . "3)、付费应用必须自己付费购买；\n"
                    . "4)、一台设备对应一个苹果AppleID；\n"
                    . "5)、真实体验满规定时间；\n"
                    . "6)、iPad部分任务需要在App Store选择“仅iPhone”下载，否则搜不到图标相同的任务；\n"
                    . "7)、保持头号试玩助手一直在线；\n"
                    . "8)、任务超时后将拿不到奖励；";
                break;
            case '24':
                $response = "任务不定时更新，请多多关注。也可以收徒增加收益，收徒任务享受iOS徒弟0.5元奖励，上限20元。 ";
                break;
            default:
                break;
        }
        $response .= "\n其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理";
        return parent::transmitText($object, $response);
    }

    protected function subDMenu($object, $content){
        $response = '';
        switch ($content){
            case '31':
                $response = "一台设备只能绑定一个微信，且在头号试玩下载应用时，只能用唯一的苹果账号从 App Store 下载。如果有小伙伴不按照规则来绑定和试玩，是没有办法继续好好玩耍的哦~";
                break;
            case '32':
                $response = "登陆头号试玩需要绑定手机号才能试玩。【注意】手机号不能解绑。";
                break;
            case '33':
                $response = "小可爱~ 使用'绑定微信'功能请关注“thsw666”【头号试玩+】公众号哈~ 爱你~";
                break;
            case '34':
                $response = "如您在使用头号试玩的过程中，违反了规则，触犯了头号试玩的防作弊机制，可能会出现账号被冻结的情况。所以请您按照规则要求来试玩。\n"
                    . "您可以留下您的头号试玩ID或您绑定的手机号，联系人工客服小姐姐来查询具体具体情况。";
                break;
            case '35':
                $response = "请确认手机是否停机、手机信号是否满格。";
                break;
            case '36':
                $response = "苹果越狱系统不能领取试玩任务，请恢复至正常系统后过24小时即可看到任务（具体恢复方法请参考百度）。 若您账号没有越狱，但是安装了第三方商店软件也请您全部卸载后过12小时即可（第三方商店软件例如“PP助手”、“爱思助手”等）。";
                break;
            default:
                break;
        }
        $response .= "\n其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理";
        return parent::transmitText($object, $response);
    }

    protected function subHMenu($object, $content){
        $response = '';
        switch ($content){
            case '41':
                $response = "【操作步骤】打开头号试玩，找到“提现”→立即提现→微信提现、支付宝提现（待开放）。  【注意】提现前需要绑定微信号和手机号。";
                break;
            case '42':
                $response = "首次提现时，需按提示先关注提现专用的微信公众号“头号试玩+”；\n"
                    . "提现后通过审核钱会直接打到你的微信钱包，可以在微信-钱包-我-交易记录中查看。 \n"
                    . "每个头号试玩账户只能绑定提现一个实名认证的微信账号，微信10元起提。"
                    . "微信提现不收手续费。";
                break;
            case '43':
                $response = "暂未开放";
                break;
            case '44':
                $response = "【微信提现被退回】请确认是否填写的姓名与微信绑定银行卡的姓名一致。";
                break;
            case '45':
                $response = "申请提现后一般一到两日到账；如遇法定节假日会顺延。";
                break;
            case '46':
                $response = "每天只能提现一次，微信或支付宝选择一种方式提现";
                break;
            default:
                break;
        }
        $response .= "\n其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理";
        return parent::transmitText($object, $response);
    }

    #是否是关键词
    protected function isKeyword($text){
        if(empty($text)){
            return '';
        }

        $tmp_test = strtoupper($text);
        foreach($this->keyWords as $ruleFunc => $keyArys){
            if(in_array($tmp_test, $keyArys)){
                return $ruleFunc;
            }
        }

        return '';
    }

    #菜单按钮
    protected function receiveEvent($object){
        $resultStr = '';

        switch ($object->Event){
            case 'subscribe':   // 用户关注 (包含未关注用户进行扫码时的场景)
                $resultStr = $this->focusOn($object);
                break;
            case 'CLICK':
                switch ($object->EventKey){
                    case 'V2001_FEEDBACK':   // 问题反馈
                        $resultStr = $this->feedback($object);
                        break;
                    case 'V3002_VERCODE': // 验证码
                        $resultStr = $this->vercodeProc($object);
                        break;
                    default:
                        break;
                }
                break;
            default:
                break;
        }

        return $resultStr;
    }

   #关注时，自动回复
    protected function focusOn($object){
        $content = "亲爱的头号玩家，欢迎加入头号试玩大家庭！在这里你可以通过试玩任务赢得奖励，每个任务1-2元，日赚20元，当日即可提现！还会不定期开展活动，传授赚钱技巧，让你越来越有钱！头号试玩，你的零钱提款机！ \n\nps：此公众号用于问题咨询、客服（客服工作时间：周一~周五10：00-18：00）；如您需要绑定微信，请关注“thsw666”【头号试玩+】公众号哈~ 爱你~";
//        $mediaId = "zHtb70iHKajpasHOmHvjrma25qhJUFWsi3MsDGk2nQ4";
//        parent::transmitPic($object, $mediaId);

        return parent::transmitText($object, $content);  //先发文字
//        return parent::transmitPic($object, $mediaId);  //再发图片
    }

    /**
     * 问题反馈
     */
    protected function feedback($object){
        $context =
        "亲爱的头号玩家，欢迎连线头号试玩客服！如您在使用头号试玩时出现闪退，打开或下载异常，请您在更新完毕后，重新安装再试玩。\n"
        . "重新安装：您可以直接在safari浏览器中输入头号试玩官方下载地址：www.touhaoshiwan.com 进行重新下载。\n"
        . "如想更快得到问题答复，回复问题数字进行查询：\n"
        . "1、头号试玩怎么玩\n"
        . "2、赚钱任务问题\n"
        . "3、账号问题\n"
        . "4、提现问题\n"
        . "5、其他请留言\n"
        . "6、其它问题请转人工客服，请输入【人工客服】为您解答。周一至周五10:00-18:00会由人工客服为您处理\n";
        return parent::transmitText($object, $context);
    }

}

$chatObj = weChat::create();
if (isset($_REQUEST['echostr'])){
    $chatObj->valid();
} else {
    $chatObj->responseMsg();
}
?>